package br.com.main.client;

import java.util.ArrayList;
import java.util.List;

import br.com.main.client.system.botoes.Denuncia;
import br.com.main.client.system.botoes.Morador;
import br.com.main.client.system.botoes.Notificacao;
import br.com.main.client.system.botoes.Reserva;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface ComunServicoAsync {

	void listarMoradores(AsyncCallback<ArrayList<Morador>> callback);

	void cadastroSindicoCondominio(String cpf, String nome, String login,
			String senha, String email, String telefone, String data_nasc,
			String data_mandato, String cnpj, String cep, String estado,
			String cidade, String bairro, String rua, int numero,
			String complemento, AsyncCallback<String> callback);

	void logInSindico(String login, String senha, AsyncCallback<String> callback);

	void cadastroMorador(String nome, String cpf, String email,
			String telefone, String data_nasc, String numero, String bloco,
			String andar, AsyncCallback<String> callback);

	void getSindico(AsyncCallback<String[]> callback);

	void cadastroAreaLazer(String nome, String capacidade, String tempoMaximo,
			AsyncCallback<String> callback);

	void updateSindico(String[] novosDados, AsyncCallback<Void> callback);

	void carregarAreaLazer(AsyncCallback<List<String[]>> callback);

	void logInMorador(String login, String senha, String cnpj,
			AsyncCallback<String> callback);

	void carregaReservas(AsyncCallback<ArrayList<Reserva>> callback);

	void carregarDespesas(AsyncCallback<List<String[]>> callback);

	void cadastroDespesa(String valor, String descricao, String data,
			String pago, AsyncCallback<String> callback);

	void cadastraReserva(int idArea, String dataReservada, AsyncCallback<String> callback);

	void carregaNotificacoes(AsyncCallback<ArrayList<Notificacao>> callback);

	void carregaDenuncia(AsyncCallback<ArrayList<Denuncia>> callback);

	void excluirMorador(String cpf, AsyncCallback<Void> callback);

	void carregaDadosMorador(AsyncCallback<String[]> callback);

	void updateMorador(String[] novosDados, AsyncCallback<Void>callback);

	void pegarFormulario(AsyncCallback<String> callback);

	void customFormat(String value, AsyncCallback<String> callback);
	
	void atualizaMorador(String nome, String cpf, String email,
			String telefone, String data_nasc, String numero, String bloco,
			String andar, AsyncCallback<String> callback);
	
	void carregaHistoricoReservas(AsyncCallback<ArrayList<Reserva>> callback);
	
	void fazerNotificacao(String[] dados, AsyncCallback<Void> callback);
	
	void getCpfSindico(AsyncCallback<String[]> asyncCallback);

	void recuperarSenha(String email, AsyncCallback<String> callback);
}
